package pathfind;

import java.util.ArrayList;

public class Path {
private ArrayList<Point> list = new ArrayList<Point>();
private boolean isSoul = false;
public Path(NodeMap map,int x,int y)
{
	if(0<=x && x<map.getsizeX() && 0<=y && y<map.getsizeY() && map.getNode(x, y) != 0){
	add(x,y);
	while(map.getNode(x, y) != 1)
	{
		int current = map.getNode(x, y);
		if(map.getNode(x+1, y)<current && map.getNode(x+1, y) > 0)
		{
			x++;
			add(x,y);
		}
		else if(map.getNode(x-1, y)<current && map.getNode(x-1, y) > 0)
		{
			x--;
			add(x,y);
		}
		else if(map.getNode(x, y+1)<current && map.getNode(x, y+1) > 0)
		{
			y++;
			add(x,y);
		}
		else if(map.getNode(x, y-1)<current && map.getNode(x, y-1) > 0)
		{
			y--;
			add(x,y);
		}
		else if(map.getNode(x-1, y-1)<current && map.getNode(x-1, y-1) > 0)
		{
			x--;
			y--;
			add(x,y);
		}
		else if(map.getNode(x+1, y-1)<current && map.getNode(x+1, y-1) > 0)
		{
			x++;
			y--;
			add(x,y);
		}
		else if(map.getNode(x-1, y+1)<current && map.getNode(x-1, y+1) > 0)
		{
			x--;
			y++;
			add(x,y);
		}
		else if(map.getNode(x+1, y+1)<current && map.getNode(x+1, y+1) > 0)
		{
			x++;
			y++;
			add(x,y);
		}
	}isSoul = true;}
}


private void add(int x,int y)
{
	list.add(new Point(x,y));
}
public Point get(int index)
{
	return list.get(index);
}
public ArrayList<Point> getList()
{
	return list;
}
public boolean isSolution()
{
	return isSoul;
}
}
